#include <iostream>
#include <vector>
#include <fstream>
#include <stdlib.h>
#include <sstream>
#include <iterator>
#include <algorithm>
#include <map>

#define CANTMAXPUNTOS 100
#define MAXCAJAB 10
#define MAXCAJAH 10
#define MAXVALORPUNTO 15

int main(void) {	
		std::ofstream output;
		output.open("p3.in");
		for (int i = 1; i<CANTMAXPUNTOS; i++){	
			int tamCajaB = (rand() % MAXCAJAB) + 1;
			int tamCajaH = (rand() % MAXCAJAH) + 1;
			output << i << " " << tamCajaB << " " << tamCajaH << "\n";
			
			std::map<std::pair<int,int>,bool > pGenerados;
  			std::map<std::pair<int,int>,bool >::iterator it;

			int x = (rand() % MAXVALORPUNTO) + 1;
			int y = (rand() % MAXVALORPUNTO) + 1;
			std::pair<int,int> nuevoP(x,y);
			pGenerados[nuevoP] = true;	
			output << x << " " << y;
			for (int j = 1; j<i; j++){
				while (pGenerados.count(nuevoP)>0){ //Me fijo que ya no lo halla agregado
					x = (rand() % MAXVALORPUNTO) + 1;
					y = (rand() % MAXVALORPUNTO) + 1;
					nuevoP.first = x;
					nuevoP.second = y;				
				}
				pGenerados[nuevoP] = true;			
				output << " " << x << " " << y;
			}
			output << "\n";		
		}
		output << "#";	
		output.close();
	return 0;
}


